/*
 * AppData.cpp
 *
 *  Created on: 2010-9-18
 *      Author: anod
 */

#include <Module-AppData/AppData.hpp>
#include <Module-AppConfig/AppConfig.hpp>
#include <Common/Common.hpp>

using AppData::moduleObj;
using AppData::hData;
using AppConfig::appConfig;

static void init(void)
{
	if( moduleObj.state == ModuleObject::MODULE_STATE_UNAVAILABLE )// 需要装载
	{
		ModuleObject *dep;
		if( moduleObj.dep != NULL ) // 本模块依赖于其它模块
		{
			dep = load_dep( moduleObj );
		}
		if( dep == NULL )	// load_dep成功
		{
			hData.setPolicy( appConfig.getPolicy() );
			moduleObj.state = ModuleObject::MODULE_STATE_READY;
		}
		else
		{
			strncpy(moduleObj.last_error, dep->last_error, ERROR_MESSAGE_SIZE);
			moduleObj.state = ModuleObject::MODULE_STATE_INITIALIZE;//只是初始化过了，不能用
		}
	}
}

static ModuleObject *modep[] =
{
		&AppConfig::moduleObj,
		NULL
};

namespace AppData
{

ModuleObject moduleObj = {
	name: "applet-data",
	dep: modep,
	module_init:init,
	last_error: "\0",
	state: ModuleObject::MODULE_STATE_UNAVAILABLE
};

HtmlDataHandler hData = HtmlDataHandler();

}
